import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 读取相关表格数据
combined_table = pd.read_csv('combined_table.csv')

# 提取年份信息
combined_table['year'] = pd.to_datetime(combined_table['create_time']).dt.year

# 筛选出2023年的数据
combined_table_2023 = combined_table[combined_table['year'] == 2023]

combined_table_2023.to_csv('combined_table_2023.csv', index=False)

# 计算2023年每个销售经理的订单数量
sales_manager_contribution_2023 = combined_table_2023.groupby('nick_name').size().reset_index(name='order_count')

# 计算2023年每个销售经理的销售总量（假设发货吨位可以代表销售总量）
sales_manager_sales_volume_2023 = combined_table_2023.groupby('nick_name')['fhdw'].sum().reset_index(name='sales_volume')

# 计算2023年每个销售经理的客户数量
sales_manager_customer_count_2023 = combined_table_2023.groupby('nick_name')['khmc_x'].nunique().reset_index(name='customer_count')

# 计算2023年每个销售经理的平均订单金额（假设货款可以代表订单金额）
sales_manager_avg_order_amount_2023 = combined_table_2023.groupby('nick_name')['hk'].mean().reset_index(name='avg_order_amount')

# 打印分析结果
print("2023年销售经理贡献分析：")
print("2023年销售经理的订单数量（从大到小）：")
print(sales_manager_contribution_2023.sort_values(by='order_count', ascending=False))
print("2023年销售经理的销售总量（从大到小）：")
print(sales_manager_sales_volume_2023.sort_values(by='sales_volume', ascending=False))
print("2023年销售经理的客户数量（从大到小）：")
print(sales_manager_customer_count_2023.sort_values(by='customer_count', ascending=False))
print("2023年销售经理的平均订单金额（从大到小）：")
print(sales_manager_avg_order_amount_2023.sort_values(by='avg_order_amount', ascending=False))

# 可视化订单数量
plt.figure(figsize=(10, 6))
sns.barplot(x='nick_name', y='order_count', data=sales_manager_contribution_2023)
plt.title('2023年销售经理的订单数量')
plt.xlabel('销售经理')
plt.ylabel('订单数量')
plt.xticks(rotation=45)
plt.show()

# 可视化销售总量
plt.figure(figsize=(10, 6))
sns.barplot(x='nick_name', y='sales_volume', data=sales_manager_sales_volume_2023)
plt.title('2023年销售经理的销售总量')
plt.xlabel('销售经理')
plt.ylabel('销售总量')
plt.xticks(rotation=45)
plt.show()

# 可视化客户数量
plt.figure(figsize=(10, 6))
sns.barplot(x='nick_name', y='customer_count', data=sales_manager_customer_count_2023)
plt.title('2023年销售经理的客户数量')
plt.xlabel('销售经理')
plt.ylabel('客户数量')
plt.xticks(rotation=45)
plt.show()

# 可视化平均订单金额
plt.figure(figsize=(10, 6))
sns.barplot(x='nick_name', y='avg_order_amount', data=sales_manager_avg_order_amount_2023)
plt.title('2023年销售经理的平均订单金额')
plt.xlabel('销售经理')
plt.ylabel('平均订单金额')
plt.xticks(rotation=45)
plt.show()

# 计算2023年总销售总量
total_sales_volume_2023 = combined_table_2023['fhdw'].sum()

# 计算2023年每个销售经理的销售总量
sales_manager_sales_volume_2023 = combined_table_2023.groupby('nick_name')['fhdw'].sum().reset_index(name='sales_volume')

# 计算市场份额（市场份额 = 销售经理的销售总量 / 总销售总量 * 100%）
sales_manager_sales_volume_2023['market_share'] = (sales_manager_sales_volume_2023['sales_volume'] / total_sales_volume_2023) * 100

# 打印分析结果
print("2023年销售经理市场份额分析：")
print(sales_manager_sales_volume_2023.sort_values(by='market_share', ascending=False))

# 可视化市场份额
plt.figure(figsize=(10, 6))
sns.barplot(x='nick_name', y='market_share', data=sales_manager_sales_volume_2023)
plt.title('2023年销售经理的市场份额')
plt.xlabel('销售经理')
plt.ylabel('市场份额')
plt.xticks(rotation=45)
plt.show()